"""
@name : 01.操作系统
@author : wenyao
@projectname: xsfh
"""
#内核  操作系统的核心代码
#linux操作系统 五大子系统
#进程调度  先进先出  短作业优先  轮询  优先级
#文件系统  linux  ext3  ext4 xfs  windows：ntfs
#内存管理  虚拟内存  虚拟地址映射  段页机制  缺页中断  内存的分配管理：伙伴系统
#网络接口
#进程通信
   #socket
   #管道
   #信号
   #信号量
   #共享内存
   #消息队列

#计算机的组成： cpu + 存储 +io
#资源：
#计算资源
#存储资源

#并发：交替执行（一段时间内可以执行多个程序）
#并行：同时执行（某个时间点，同一时刻有多个任务执行） （多核）

#cpu两种状态：用户态（运行普通程序） 内核态（运行内核程序）
#内存空间：用户空间和内核空间
#32位操作系统，1GB用户空间  3GB内核

#线程：
  #操作系统进行调度的最小单位
# 组成：
#  线程ID
#  当前指令指针（IR）
#  寄存器集合
#  堆栈
# 栈： 保存一些局部变量，由操作系统去分配销毁
# 堆： 可以给程序员调用分配空间  molloc
#进程：
  #正在运行的程序，是系统进行资源分配的最小单位
  #组成：
  #PCB （进程控制块）是进程的唯一标识
    #pid
    #有效用户
    #打开的文件 -- fd(文件描述符）  -- lsof
  #数据段  -- 程序运行过程中保存的数据（变量）
  #代码段

#进程和线程
#1、一个进程内可以有一个以上的线程，这些线程都是共享这个内存的空间的。
#2、不同进程之间内存空间是独立的
#3、创建新的线程很简单，创建一个新的进程需要对其父进程进行一次克隆
#4、一个线程可以控制和操作同一个进程里的其他线程，进程只能操作子进程
#5、一个主线程改变，可能会影响其他线程，改变父进程不会影响子进程

#一般来说多线程开销会比多进程要少
#上下文切换

#buffer 、 cache 区别